package furns.service.impl;


import furns.dao.FurnDAO;
import furns.dao.impl.FurnDAOImpl;
import furns.entity.Furn;
import furns.entity.Page;
import furns.service.FurnService;
import java.util.List;

@SuppressWarnings("all")
public class FurnServiceImpl implements FurnService {
    //定义一个FurnDAO对象，便于调用DAO层方法
    private FurnDAO furnDAO = new FurnDAOImpl();
    //查询所有家居
    @Override
    public List<Furn> queryFurns() {
        return furnDAO.queryFurns();
    }

    //保存家具
    @Override
    public int saveFurn(Furn furn) {
        return furnDAO.saveFurn(furn);
    }
    //删除家具
    @Override
    public int deleteFurnById(int id) {
        return furnDAO.deleteFurnById(id);
    }
    //查询单个家具
    @Override
    public Furn queryFurnById(int id) {
        return furnDAO.queryFurnById(id);
    }

    @Override
    public int updateFurn(Furn furn) {
        return furnDAO.updateFurn(furn);
    }
    //对所有家居分页
    @Override
    public Page<Furn> page(int pageNo, int pageSize) {
        //先创建一个Page对象
        Page<Furn> page = new Page<>();
        //填充page对象的各个属性值
        page.setPageNo(pageNo);
        page.setPageSize(pageSize);
        //填充page对象的totalRow属性
        int totalRow = furnDAO.getTotalRow();
        page.setTotalRow(totalRow);
        //先计算得到总页数，并进行填充
        int totalPage = totalRow / pageSize;
        if (totalRow % pageSize > 0) {  //当无法整除时，总页数+1
            totalPage++;
        }
        page.setPageTotalCount(totalPage);
        //填充page对象的Items属性
        //计算查询的起始位置，即begin的值。 存在问题，后续解决。
        int begin = (pageNo - 1) * pageSize;
        List<Furn> pageItems = furnDAO.getPageItems(begin, pageSize);
        page.setItems(pageItems);
        //url后续再进行设置
        return page;
    }
    //对用户搜索的指定家居进行分页
    @Override
    public Page<Furn> pageByName(int pageNo, int pageSize, String name) {
        //先创建一个Page对象
        Page<Furn> page = new Page<>();
        //填充page对象的各个属性值
        page.setPageNo(pageNo);
        page.setPageSize(pageSize);
        //填充page对象的totalRow属性
        int totalRow = furnDAO.getPageTotalCountByName(name);
        page.setTotalRow(totalRow);
        //先计算得到总页数，并进行填充
        int totalPage = totalRow / pageSize;
        if (totalRow % pageSize > 0) {  //当无法整除时，总页数+1
            totalPage++;
        }
        page.setPageTotalCount(totalPage);
        //填充page对象的Items属性
        //计算查询的起始位置，即begin的值。 存在问题，后续解决。
        int begin = (pageNo - 1) * pageSize;
        List<Furn> pageItems = furnDAO.getPageItemsByName(name, begin, pageSize);
        page.setItems(pageItems);
        //url后续再进行设置
        return page;
    }


}
